/************************************************************************

								Heroes IV
					  Copyright 2000, The 3DO Company

	------------------------------------------------------------------
  						       creature_detail_display.h

	$Header: /game/creature_detail_display.h $

	$NoKeywords: $

 ************************************************************************/
#ifndef CREATURE_DETAIL_DISPLAY_H_INCLUDED
#define CREATURE_DETAIL_DISPLAY_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// kill the 255+ character identifier warning.  Templates tend to exceed that easily.
#pragma warning( disable: 4786 )

#include <string>
#include "bitmap_group_window_ptr.h"
#include "bitmap_group_ptr.h"
#include "screen_point.h"
#include "skill_icon_ptr.h"
#include "text_window_ptr.h"
#include "window_rect.h"

class t_creature;
class t_creature_array_window;
class t_hero;
class t_luck_icon_window;
class t_morale_icon_window;


// --------------------------------------------------------------------
// utility object to display information about a selected creature 
// --------------------------------------------------------------------
class t_creature_detail_display
{
public:
	void create( t_bitmap_group_ptr bitmaps, t_window* text_parent, 
				 t_screen_point		text_origin,
			     t_window*		    icon_parent, t_screen_point icon_origin );
	void select_creature( t_creature_array_window* window, int index );
	void set_boat( bool arg );
protected:
	enum {
		k_skill_icon_count = 8
	};

	t_text_window* create_text( std::string layer_name, std::string text, int font_size = 0 );
	t_text_window* create_text( std::string text_layer, std::string label_layer, std::string label, int font_size = 0 );
	void set_skills( t_creature const& creature );
	void set_skills( t_hero const& hero );

	t_bitmap_group_ptr      m_bitmaps;
	t_text_window_ptr       m_creature_damage;
	t_text_window_ptr       m_creature_health;
	t_luck_icon_window*		m_creature_luck;
	t_text_window_ptr       m_creature_mana;
	t_morale_icon_window*	m_creature_morale;
	t_text_window_ptr       m_creature_move;
	t_text_window_ptr       m_creature_name;
	t_skill_icon_ptr		m_creature_skills[k_skill_icon_count];
	t_text_window_ptr       m_hero_class;
	bool					m_is_boat;
	t_window_ptr            m_text_parent;
	t_screen_point          m_text_origin;
};	

inline void t_creature_detail_display::set_boat( bool arg )
{
	m_is_boat = arg;
}

#endif // CREATURE_DETAIL_DISPLAY_H_INCLUDED
